From: Giovanni Campagna Date: Fri, 31 Aug 2012 16:43:00 +0000 (+0200) Subject: MessageTray: escape the tray when a legacy icon is clicked X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~5987 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=eb351b18825b7eb0ee29716f444df9eb2b6d3a44;p=gnome-shell.git MessageTray: escape the tray when a legacy icon is clicked Legacy tray icons may want to take a pointer grab to show a popup menu, and this is incompatible with message tray modality. To solve this, escape the tray when forwarding clicks to the tray icons, and wait for the input mode change to actually synthetize the X event. https://bugzilla.gnome.org/show_bug.cgi?id=682244 --- diff --git a/js/ui/messageTray.js b/js/ui/messageTray.js index 7ada61685..a382c799a 100644 --- a/js/ui/messageTray.js +++ b/js/ui/messageTray.js @@ -1740,7 +1740,7 @@ const MessageTray = new Lang.Class({ _onSummaryItemClicked: function(summaryItem, button) { if (summaryItem.source.handleSummaryClick()) { - this._setClickedSummaryItem(null); + this._escapeTray(); } else { if (!this._setClickedSummaryItem(summaryItem, button)) this._setClickedSummaryItem(null); diff --git a/js/ui/notificationDaemon.js b/js/ui/notificationDaemon.js index fb580fe10..5b41197d1 100644 --- a/js/ui/notificationDaemon.js +++ b/js/ui/notificationDaemon.js @@ -583,18 +583,12 @@ const Source = new Lang.Class({ this.notifications.length > 0) return false; - if (Main.overview.visible) { - // We can't just connect to Main.overview's 'hidden' signal, - // because it's emitted *before* it calls popModal()... - let id = global.connect('notify::stage-input-mode', Lang.bind(this, - function () { - global.disconnect(id); - this.trayIcon.click(event); - })); - Main.overview.hide(); - } else { + let id = global.connect('notify::stage-input-mode', Lang.bind(this, function () { + global.disconnect(id); this.trayIcon.click(event); - } + })); + + Main.overview.hide(); return true; },